<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 1.利用 关键字 Object 创建对象
        var obj = new Object();

        // 2.字面量
        var obj1 = {}

        // 3.利用构造函数创建对象
        // 构造函数是一直特殊的函数，主要作业是用来初始化对象，即为对象成员变量赋初始值，
        // 它和 new 一起使用。 我们可以把对象中一些公用的属性和方法抽取出来，然后封装到一个函数里面


        // new 在执行时做的具体事情。
        // 1.在内存中创建一个新的空对象
        // 2.让 this 指向这个新的对象
        // 3.执行构造函数里面的代码,给这个新的对象添加属性和方法
        // 4.返回这个新的对象(所以构造函数里面不需要 return)
        function Star(uname, age){
            this.uname = uname;
            this.age = age;
            this.sing = function(){
                console.log("我在唱歌");
            }
        }
        var jay = new Star("周杰伦", 19);
        var eason = new Star("陈奕迅", 22);
        console.log(jay);
        console.log(eason);
        jay.sing();
        eason.sing();
    </script>
</body>
</html>